import pymysql


# 创建 工具类
class DBTools(object):
    # 创建静态 私有 方法
    @staticmethod
    def __db_connect():
        # 建立连接，返回连接的对象
        conn = pymysql.connect(host="211.103.136.244", port=7061, user="student", password="iHRM_student_2022",
                               database="ihrm", charset="utf8")
        return conn

    # 数据库 查询, sql 代表用户指定的 查询语句
    @staticmethod
    def query_one(sql):
        conn = None
        cursor = None
        # 执行sql语句，获取结果集
        try:
            # 创建连接
            conn = DBTools.__db_connect()
            # 创建游标
            cursor = conn.cursor()  # 指向 0 号位置
            # 执行 sql 语句
            cursor.execute(sql)
            # 获取 第一条 数据
            ret = cursor.fetchone()

            # 返回 查询到的 一条记录
            return ret

        except Exception as err:
            print("出现异常啦，错误：", err)
        finally:
            # 5. 关闭游标
            cursor.close()
            # 6. 关闭连接
            conn.close()

    # 数据库 增删改
    @staticmethod
    def db_idu(sql):
        conn = None
        cursor = None
        try:
            # 2. 创建连接
            conn = DBTools.__db_connect()
            # 3. 创建游标
            cursor = conn.cursor()  # 指向 0 号位置
            # 4. 执行 sql 语句
            cursor.execute(sql)
            # 提交事务
            conn.commit()
            print("数据库 操作 完成！")
        except Exception as err:
            print("数据库 操作出现异常：", err)
            # 回滚事务
            conn.rollback()
        finally:
            # 5. 关闭游标
            cursor.close()
            # 6. 关闭连接
            conn.close()


if __name__ == '__main__':
    # 测试查询
    ret = DBTools.query_one("select * from bs_user where mobile = '13800000002';")
    print(ret)

    # 测试 增删改. 如果，指定的 数据在数据库中不存在，删除、修改 不执行，不会报错！！！
    # DBTools.db_idu("delete from t_book where id = 16;")
    # DBTools.db_idu("update t_book set `read` = `read`+1 where id = 6;")
